<!DOCTYPE html>
<html>

<head lang="en">
  <meta charset="UTF-8">
  <title>Date对象</title>
</head>

<body>

  <script>
    //Array.from(arrayLike) 方法从一个类似数组或可迭代对象创建一个新的，浅拷贝的数组实例。
    function fun(a, b, c) {
      console.log(arguments);
      console.log(Array.prototype.slice.call(arguments, 0));
      console.log(Array.from(arguments));
    }
    fun(1, 2, 3);

    //思考下述案例
    var a = [1,{x:2}];
    var b = Array.from(a);
    b[1].x = 3;
    console.log(a[1].x);// 2 or 3

    //Array.isArray() 用于确定传递的值是否是一个 Array。
    Array.isArray([1, 2, 3]); // true
    Array.isArray({
      foo: 123
    }); // false
    Array.isArray("foobar"); // false
    Array.isArray(undefined); // false

    //Array.of() 方法创建一个具有可变数量参数的新数组实例，而不考虑参数的数量或类型。
    Array.of(7); // [7] 
    Array.of(1, 2, 3); // [1, 2, 3]

    new Array(7); // [ , , , , , , ]
    new Array(1, 2, 3); // [1, 2, 3]


    //Array 原型方法 splice
    var c = [1,2,3,4,5];
    c.splice(2,1,7,8);//start,deleteCount,...arg
    console.log(c);//[1, 2, 7, 8, 4, 5] 切掉a[2] 补上7和8

    //Array.prototype.reverse()
    var arr1 = [1,2,3];
    arr1.reverse();
    console.log(arr1);

    //Array.prototype.sort(compareFunction？)
    var arr2 = ["banana","apple","pear","orange"];
    arr2.sort();
    console.log(arr2);

    //思考sort中的参数
    var arr3 = [-1,-20,7,50];
    arr3.sort();
    console.log(arr3);//结果是否是预计结果,如何解决

    //sort传递的函数对象
    arr3.sort(function (a,b) {return a-b;});//对于数字类型，大于0则交换，冒泡排序


    //合并、切分和连接 非破坏性
    //Array.prototype.concat(arr1?,arr2?,...)
    var arr4 = ["banana","apple"];
    var arr5 = ["pear","orange"];
    var newArray = arr4.concat(arr5);
    console.log(newArray,arr4,arr5);

    //Array.prototype.slice(begin?,end?)注意：不要和splice弄混了
    var arr6 = [1,2,3,4,5];
    var newArray = arr6.slice(2,4);
    console.log(newArray,arr6);
    var newArray2 = arr6.slice(2);
    console.log(newArray2,arr6);

    //Array.prototype.join(separator?)
    var arr7 = [3,4,5];
    var joinReturn = arr7.join("--");//返回了个什么类型？
    console.log(joinReturn,arr7);
    console.log(typeof joinReturn);
    //注意：稀疏数组调用join
    console.log([3,,,,,,5].join("*"));

    //值的查找 非破坏性
    //Array.prototype.indexOf(searchValue,startIndex?)
    var arr8 = [1,3,5,5,7,9,5];
    console.log(arr8.indexOf(5));//输出几？
    console.log(arr8.indexOf(5,3));//输出几？
    console.log(arr8.indexOf(5,5));//输出几？

    //Array.prototype.lastIndexOf(searchElement,startIndex?)
    console.log(arr8.lastIndexOf(5));//输出几？
    console.log(arr8.lastIndexOf(5,3));//输出几？
    console.log(arr8.lastIndexOf(5,5));//输出几？
  </script>
</body>

</html>